package com.ruoyi.pms.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.GlobalInfo;
import com.ruoyi.pms.domain.PmsTask;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.pms.mapper.PmsTaskLogMapper;
import com.ruoyi.pms.domain.PmsTaskLog;
import com.ruoyi.pms.service.IPmsTaskLogService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 任务历史记录Service业务层处理
 *
 * @author huikai
 * @date 2025-03-18
 */
@Service
public class PmsTaskLogServiceImpl extends ServiceImpl<PmsTaskLogMapper, PmsTaskLog> implements IPmsTaskLogService {
    @Autowired
    private PmsTaskLogMapper pmsTaskLogMapper;

    /**
     * 查询任务历史记录列表
     *
     * @param pmsTaskLog 任务历史记录
     * @return 任务历史记录
     */
    @Override
    public List<PmsTaskLog> selectPmsTaskLogList(PmsTaskLog pmsTaskLog) {
        return pmsTaskLogMapper.selectPmsTaskLogList(pmsTaskLog);
    }


    /**
    * 查询任务历史记录记录
    * @param logId
    * @return
    */
    @Override
    public PmsTaskLog getInfoByLogId(Long logId) {
        return pmsTaskLogMapper.selectById(logId);
    }

    /**
     * 新增任务历史记录记录
     * @param pmsTaskLog 任务历史记录
     * @return
     */
    @Override
    public Boolean add(PmsTaskLog pmsTaskLog) {
        return pmsTaskLogMapper.insert(pmsTaskLog) > 0;
    }

    /**
     * 修改任务历史记录记录
     * @param pmsTaskLog 任务历史记录
     * @return
     */
    @Override
    public Boolean edit(PmsTaskLog pmsTaskLog) {
        return pmsTaskLogMapper.updateById(pmsTaskLog) > 0;
    }

    /**
     * 删除任务历史记录记录
     * @param logIds
     * @return
     */
    @Override
    public Boolean removeByLogIds(Long[] logIds) {
        return pmsTaskLogMapper.deleteBatchIds(Arrays.asList(logIds)) > 0;
    }

    /**
     * 根据任务列表创建任务日志
     * @param taskList 任务列表
     * @param logType
     */
    public void createTaskLogByTaskList(List<PmsTask> taskList,String logType){
        if(taskList==null||taskList.size()==0){
            return;
        }
        List<PmsTaskLog> insertList = new ArrayList<>();
        String[] ignorePropertyNames = new String[]{"createBy","createTime","updateBy","updateTime"};
        for (PmsTask task : taskList) {
            PmsTaskLog pmsTaskLog = new PmsTaskLog();
            BeanUtils.copyProperties(task,pmsTaskLog);
            pmsTaskLog.setLogType(logType);
            pmsTaskLog.setCreateBy(GlobalInfo.getUserId());
            pmsTaskLog.setCreateTime(new Date());
            insertList.add(pmsTaskLog);
        }
        this.saveBatch(insertList);
    }
}